#ifndef _GUI_GROUPBOX_WIN32_
#define _GUI_GROUPBOX_WIN32_

#include "../GUI.h"
#include "Core/Memory/HeapObject.h"
#include "Core/GUI/Tab/ITab.h"

namespace GUI
{
	namespace Win32
	{
		class Tab : public Core::GUI::ITab, public Core::Memory::HeapObject
		{
		public:
			Tab();
			Tab(int _iWidth, int _iHeight);
			virtual ~Tab();
			void Create(HWND _hWindow, HINSTANCE _hInstance);
			GUI_WIN32 virtual Core::GUI::WidgetType GetType() const;
			GUI_WIN32 virtual int GetId() const;
			GUI_WIN32 virtual int GetWidth() const;
			GUI_WIN32 virtual int GetHeight() const;
			GUI_WIN32 virtual int GetX() const;
			GUI_WIN32 virtual int GetY() const;
			GUI_WIN32 virtual void Resize(int _iWidth, int _iHeight);
			GUI_WIN32 virtual void Move(int _x, int _y);
			GUI_WIN32 virtual void Accept(Core::GUI::IVerticalLayout * _pVerticalLayout);
			GUI_WIN32 virtual void Accept(Core::GUI::IHorizontalLayout * _pHorizontalLayout);
			GUI_WIN32 virtual void AddTab(const std::string & _strLabel, Core::GUI::IVerticalLayout * _pLayout);
			GUI_WIN32 virtual void AddTab(const std::string & _strLabel, Core::GUI::IHorizontalLayout * _pLayout);
			GUI_WIN32 virtual void RemoveTab(const std::string & _strLabel);
			GUI_WIN32 virtual void ShowTab(int index);

		private:
			HWND m_hTabCtrl;
			int m_iWidth;
			int m_iHeight;
			int m_iX;
			int m_iY;
			int m_iId;
			HINSTANCE m_hInstance;
			HWND m_hWnd;
			std::vector<HWND> m_hTabs;

			friend class VerticalLayout;
			friend class HorizontalLayout;
		};
	}
}

#endif // _GUI_SLIDER_WIN32_